package com.hongyun.tms.mapper;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hongyun.tms.common.dto.dict.MDictDataDTO;
import com.hongyun.tms.common.dto.dict.MDictTypeDTO;
import com.hongyun.tms.common.dto.dict.MDictTypeSearchDTO;
import com.hongyun.tms.common.po.MDictDataPO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 孙琦
 * @Description 字典及字典类型操作mapper
 * @date 2023-4-26 16:57:35
 */
public interface MDictMapper {

    /**
     * 查询全部字典类型
     */
    Page<MDictTypeDTO> getDictTypeList(Page<?> page, @Param("mDictTypeSearchDTO") MDictTypeSearchDTO mDictTypeSearchDTO);


    /**
     * 查询全部字典类型
     */
    Page<MDictDataDTO> getDictList(Page<?> page, @Param("po") MDictDataDTO po);


    /**
     * 新增字典类型
     */
    void insertDictType(MDictTypeDTO po);

    /**
     * 修改字典类型
     */
    Integer updateDictType(MDictTypeDTO po);

    /**
     * 查询该字典类型下是否有字典存在
     */
    Integer getCountDictByType(@Param("id") Long id);

    /**
     * 新增字典类型
     */
    Integer deleteDictTypeById(@Param("id") Long id);

    /**
     * 新增字典
     */
    void insertDict(MDictDataDTO po);

    /**
     * 根据字典类型获取全部字典值
     */
    Page<MDictDataDTO> getDictListByType(String typeCd);

    List<MDictDataDTO> getDictsByType(String typeCd);

    /**
     * 根据字典id查询字典
     */
    MDictTypeDTO getDictTypeById(Long id);

    /**
     * 修改字典
     */
    Integer updateDict(MDictDataDTO po);

    /**
     * 删除字典
     */
    Integer deleteDictById(@Param("id") Long id);


    /**
     * 根据id查询字典
     *
     * @param id
     * @return
     */
    MDictDataDTO getDictById(Long id);

    void changeDictType(MDictTypeDTO po);

    MDictDataPO selectOneByTypeAndValue(@Param("typeCode") String typeCode, @Param("dictValue") String dictValue);
}
